The present invention is intended to be utilized with a printer controller for a laser printer engine which has, for example, 400 Dots Per Inch (DPI) with 20 pages per minute (ppm) speed. Because such an engine has higher speed and higher resolution, the printer controller requirements are more severe than 300 DPI and 8 ppm engines.
One of the key components to achieve higher speed and higher resolution is the control of a frame buffer used to buffer raster image information to be sent to the printer engine through a video interface.
In order to print through a laser printer, each pixel (picture element) must be defined as either black or white. A pixel is processed by the CPU (Central Processing Unit) of a controller and sent to the laser printer engine through video interface line(s). One major problem in this process of defining pixels of a page and sending the information to the printer engine is that the CPU is much slower in the processing time required to define the pixels than the printer engine needing them. One solution of this asynchronous process is to use a frame buffer for the synchronization.
There are two approaches in the prior art to construct a frame buffer. One approach is to create an entire page pixel definition by using a full bit map.
For example, if the printer engine is 300 DPI and handles only a letter size document, the buffer requires 2550.times.3300 pixels. The first number denotes the X dimension of the scanning (the number of pixels per scan line) and the second number denotes the number of scan lines (the Y dimension).
The other prior art approach is to receive an entire page description from a host computer and to create a display list. Under this approach, the frame buffer can be smaller than the full bit map depending upon the speed of creating the raster data from the display list. The frame buffer, which is smaller than full page bit map, is referred to as a band buffer.
The prior art approach of data width to and from the frame buffer is defined by the data width of the CPU. For example, if the CPU is one in the art known as a Motorola 68000, the data width is 16 bits. One problem of this approach is that when a band buffer is employed, the CPU may not have sufficient time to fill the buffer before the transfer of the data to the priner engine catches up. The critical factor for the use of the band buffer is the amount of time available for CPU to fill the buffer relative to the amount of time required to read out data from the band buffer. The CPU must have sufficient time to process input data and to quickly fill the band buffer.